<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Lyrical introduction to plugins</title>
<meta http-equiv="Content-Type" Content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="../styles/styles.css">
<script language="JavaScript" src='links.js' type="text/javascript"></script>
</head>

<body>

<h1>Lyrical introduction to plugins</h1>
<div class=navbar>
<a href="index.html">main</a>
</div>


<table border="1" align="right" cellpadding="4">
<tr><td><em>
Tell me, what has the power?<br>
Money, you say.<br>
My brother thinks so as well.<br>
But actually... plugins hold the power.
</em></td></tr></table>

<p class=justi>Plugins might seem clumsy and overwhelming, but in fact, there's over
a hundred plugins of all kinds for FAR Manager now - ranging from Tetris games to e-mail clients.
This phenomenon is strange at first sight, but it is understandable -
everyone wants what he needs and doesn't wait for someone to do that.

<p class=justi>Plugin technology is definitely not new, but few other application can
claim such an extensive use of plugins as FAR. The reason is, most likely, the fairly
flexible structure of FAR itself, along with the simple approach of shell interaction with
plugins. Essentially, this encyclopedia is dedicated to this approach. We won't praise,
analyze or rave about the advantages of plugin interface. Just start study it and you
will understand that in FAR you can do anything you want.

<p class=justi>The main idea behind the concept of plugins is customizability. Install
only those plugins that provide the functionality you want, and discard anything
unneeded. That way, your tool will end up exactly the way you want it, without any
unnecessary sag -- and that's the main advantage of FAR Manager over the integrated shells.
Besides, it can always learn new tricks and do something that it has never done before.</p>

<p class=justi>So how do you take advantage of that? Alas, it's not entirely magic; you will
need certain programming experience. However, from this point there's very few requirements;
almost any programming language would do, given that you have a compiler capable of producing
Windows DLLs. Best documentation and examples are available for C/C++, Delphi and assembly
language; there are plugins known to be written in Modula, Ada and C--.
In some cases you'll be faced with lots of extra details. You can read about them in
<a href="articles/index.html">special topics</a>.

<p class=justi>During initialization, FAR scans its <code>Plugins</code>
folder and its respective subfolders, and considers all files with .DLL extension
found there to be its plugins. Therefore, if your plugin uses its own DLLs, they must
have a different extension. In fact, plugin is an ordinary library that runs in the
console process environment, so it functions just like any console Win32 application.
However, due to the compatibility issues plugin shouldn't directly write text to the screen;
<a href="service_functions/text.html">Text</a> function from <a href="service_functions/index.html">FAR Manager service</a>
should be used instead.</p>

<div class=see>See also:</div><div class=seecont>
<a href="reviews.html">Overview of plugin capabilities</a>,
<a href="exported_functions/index.html">Exported functions</a>,
<a href="service_functions/index.html">Service functions</a>,
<a href="structures/index.html">Structures</a>,
<a href="customapi/archives/index.html">Archive support</a>
</div>

</body>
</html>
